package cn.findviewbydream.evil.main.dao;

import cn.findviewbydream.evil.main.entity.CodeTypeEntity;
import cn.findviewbydream.evil.main.entity.PostEntity;
import cn.findviewbydream.evil.main.entity.PostPraiseEntity;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/********************************************
 * 工程名：HebeuCS
 * 包名：cn.findviewbydream.evil.main.dao
 * 时间：16-11-5 下午1:51
 * 作者：白雨濃 evil
 * 邮箱：evilbai@foxmail.com
 * 内容：代码讨论Dao
 ********************************************/
@Repository("codeDao")
public interface CodeDao
{
    /**
     * 查询编程语言类型
     *
     * @return 语言类型的list
     */
    List<CodeTypeEntity> selectCodeType();

    /**
     * 通过id查询编程语言类型
     *
     * @param id 编程语言类型id
     * @return 编程语言类型对象
     */
    CodeTypeEntity selectCodeTypeById(int id);

    /**
     * 通过类型(type)查询编程语言类型
     *
     * @param type 编程语言类型的类型
     * @return 编程语言类型对象
     */
    CodeTypeEntity selectCodeTypeByType(String type);


    /**
     * 根据编程语言类型查询贴子数量
     *
     * @return 此类型贴子的数量
     */
    int selectPostCount(CodeTypeEntity codeTypeEntity);


    /**
     * 查询贴子列表
     *
     * @param codeId   代码类型的id
     * @param codeType 代码类型
     * @param start    开始位置
     * @param size     列表最大长度
     * @return 贴子列表集合
     */
    List<PostEntity> selectPostList(@Param("codeId") int codeId,
                                    @Param("codeType") String codeType,
                                    @Param("start") int start,
                                    @Param("end") int size);

    /**
     * 根据贴子的id查询该贴子的点赞实体列表
     *
     * @param postId 贴子id
     * @return 点赞实体列表
     */
    List<PostPraiseEntity> selectPostPraiseListByPostId(int postId);
}
